package others_request

import (
	"private-go-sdk/http"
	"encoding/json"
	"private-go-sdk/model/common"
)

type CrossborderContractCreatebycategoryRequest struct {
	// <ext>core:true;format:string</ext> 【用印流程id】用印流程id 【作用】 1、实际签署过程中，存在不同类型的文件签署流程，比如采购（企业与企业进行签署）、人事（企业与个人进行签署） 2、可在电子签章前台中根据实际的签署场景提前搭建不同的用印流程，用印流程中支持提前设置好签署方、签署顺序及流程、签署文件、指定签署位置等等 3、发起文件时，需选择使用的用印流程，此参数可传入用印流程id查询 【传参】 1、内部单位必须传入用印流程发起，外部单位无用印流程功能因此可不传入（如内部单位的用印流程配置为外部单位可发起，可传入用印流程） 2、用印流程id和用印流程名称必传其一，均传入以用印流程id为准
	CategoryId *int64 `json:"categoryId,omitempty"`
	// <ext>core:true</ext> 【用印流程名称】用印流程名称 【作用】 传入用印流程名称查询本次发起的电子签约文件所使用的用印流程 【传参】 用印流程id和用印流程名称必传其一，均传入以用印流程id为准。
	CategoryName string `json:"categoryName,omitempty"`
	// <ext>core:true</ext> 【文件主题】文件主题 【作用】 电子签约文件的标题，如签署劳动合同时，可设置为“劳动合同-XX公司-张三” 【传参】 最大长度：500（包含）。 【特殊说明】 用印流程-高级配置中可设置文件主题生成规则，若设置按规则自动生成，则接口传入无效；若设置为发起人自定义，则接口传入的文件主题生效。
	Subject string `json:"subject"`
	// <ext>core:true</ext> 【是否发起电子签约】是否发起电子签约 【作用】 1、若立即发起，则接口调用成功后电子签约文件直接进入签署状态，签署人将按顺序进行签署（若签署前需要填参，则由对应的用户补全文件后内容后进入签署） 2、若保存为草稿，文件不会发起签署，后续若需继续修改签署信息可调用<docs>/cross-border/contract/edit</docs> ；后续若需发起时需调用<docs>/cross-border/contract/send</docs>发起电子签约 【传参】 取值范围：true（立即发起），false（保存为草稿）；不传值默认为：true（立即发起）。
	Send *bool `json:"send,omitempty"`
	// 【文件编号】文件编号 【作用】电子签约文件的编号，方便对文件进行查询、归档等管理，如“QYS-20160101-000001” 【传参】 最大长度：400（包含）。 【特殊说明】 用印流程若设置按规则自动生成，则接口传入无效；若设置为发起人自定义，则接口传入的文件编号生效
	Sn string `json:"sn,omitempty"`
	// <ext>core:true;format:date</ext> 【文件定时发起时间】文件定时发起时间 【作用】 可以创建文件后保存草稿，在设定的时间由系统自动发起文件 【传参】 1、仅在send（是否发起电子签约）为false（保存为草稿）时生效。 2、日期格式：yyyy-MM-dd HH:mm
	SendTimeStr string `json:"sendTimeStr,omitempty"`
	// 【第三方业务系统文件id】第三方业务系统文件id 【作用】 可传入业务系统中唯一的文件id，方便后续查询、管理电子签约文件 【传参】 最大长度：200（包含）。 【特殊说明】 1、bizid不能与草稿、签署中、已完成、作废中的电子签约文件重复 2、如果电子签约文件已作废、已撤回、已拒签，则允许其bizid被重复使用
	BizId string `json:"bizId,omitempty"`
	// 【业务数据】业务数据 【作用】 可传入业务系统中需要记录的数据，比如相关审批意见、电子签约文件的说明，不会在页面展示，但支持回调给业务系统 【传参】 最大长度：4000（包含）。
	BusinessData string `json:"businessData,omitempty"`
	// 【文件描述】文件描述 【作用】 用于对文件进行补充描述，不会在页面展示，仅在系统数据库中记录 【传参】 最大长度：1200（包含）。
	Description string `json:"description,omitempty"`
	// <ext>core:true</ext> 【发起主体名称】发起主体名称 【作用】 即电子签约文件的发起单位，仅能传入用印流程设置的发起主体范围 【传参】 最大长度：500（包含）。
	TenantName string `json:"tenantName"`
	// <ext>core:true</ext> 【发起人姓名】发起人姓名 【作用】 当传入的发起人未在系统中时，将使用该姓名作为发起人账号的姓名。如发起人已存在，则传入的姓名无效
	CreatorName string `json:"creatorName,omitempty"`
	CreatorInfo *common.CrossborderContractCreatebycategoryCreatorInfoRequest `json:"creatorInfo,omitempty"`
	// <ext>core:true;deprecated:true</ext> 【发起人联系方式】发起人联系方式 【作用】 可传入手机号、邮箱查询并记录该电子签约文件的发起人。 【传参】 1、可传入用户手机号或者邮箱。 2、手机号允许使用大陆、港澳台、国际手机号，手机号格式为：区号+空格+手机号，例：852 9xxxxxxx ，大陆手机号可以不传区号。 3、邮箱需传入符合格式的字符串，例：xxxxxxxx@163.com。 4、当前参数传入时，将会替代creatorInfo参数中的contact参数，按照creatorInfo的参数逻辑进行查询发起人
	CreatorContact string `json:"creatorContact,omitempty"`
	// <ext>core:true</ext> 【自定义字段】自定义字段 【作用】 1、除文件主题、文件编号等基础信息，不同类型的文件发起时需要填写的字段信息是不同的，例如发起采购合同可填写金额，发起人事合同可填写员工岗位 2、自定义字段可在【电子签章管理后台】统一定义或在用印流程中根据业务定义，定义好后可通过该参数传入字段值
	CustomizeFields []CbCustomizeFiled `json:"customizeFields,omitempty"`
	// <ext>core:true;format:string</ext> 【文件模板id】文件模板id 【作用】 用印流程中绑定多个文件模板时，可以通过此参数指定当前电子签约中需要的部分模板
	Templates []string `json:"templates,omitempty"`
	// <ext>core:true;format:string</ext> 【签署文档id】签署文档id 【作用】 可自定义上传本地、图片、文件模板作为本次签署的文件，但因转换文档需要时间，如在本接口发起文件时同步转换文档会导致发起文件耗时较长，所以需提前调用创建文档相关接口转换为签署文档id后再通过此参数填写。创建文档接口如下： 1、<docs>/cross-border/v2/document/createbyfile</docs> ：选择本地的文件转换为PDF格式的签署文档 2、<docs>/cross-border/document/createbytemplate</docs> ：传入系统中已维护的文件模板id，将模板转换成PDF格式的签署文档 3、<docs>/cross-border/document/createbytemplates</docs> ：传入系统中多个已维护的文件模板id，将模板转换为PDF格式的签署文档 4、<docs>/cross-border/document/createbyfiles</docs> ：选择多个本地的文件，合并并转换为PDF格式的签署文档 5、<docs>/cross-border/v2/document/createbyurl</docs> ：使用传入的url获取文件转换为PDF格式的签署文档，支持本地路径/网络路径或ftp存储路径的文件  【特殊说明】 用印流程-文件设置中开启“发起签约时，允许新增文件”，则传入的签署文档与用印流程中配置的文件模板都作为电子签约文档；若未开启配置，则只能使用用印流程中配置的文件模板
	Documents []int64 `json:"documents,omitempty"`
	// <ext>core:true</ext> 【模板参数】模板参数 【作用】 1、签署文件中包含待填写的参数时，支持传入参数的值补全文件内容 2、支持传入所有签署方的待填参数，用户进行拟定时可查看接口传入的默认值，但可改
	DocumentParams []CbDocumentParam `json:"documentParams,omitempty"`
	// <ext>core:true</ext> 【签署方】签署方 【作用】 即需签署的组织（仅支持内部组织签署方）和个人，组织签署方下可设置签署节点（签署、审批），个人仅支持签署 【特殊说明】 签署方不允许为空
	Signatories []CbSignatory `json:"signatories,omitempty"`
	// <ext>core:true</ext> 【签署截止日期】签署截止日期 【作用】 若超过该日期，文件的所有签署方将不能进行文件签署，文件状态变为“已截止签署” 【传参】 1、日期格式：yyyy-MM-dd。 2、若传入2022-03-09，系统将在2022年3月9日的23时59分59秒后将文件标记为“已截止签署”。
	ExpireTime string `json:"expireTime,omitempty"`
	// <ext>core:true</ext> 【文件到期日期】文件到期日期 【作用】 文件履行期限的截止日期，若超过此日期后，文件将标记为“已到期” 【传参】 1、日期格式：yyyy-MM-dd。 2、传入日期必须晚于当前日期，，若传入2022-03-09，系统将在2022年3月9日的23时59分59秒将文件标记为“已到期”。
	EndTime string `json:"endTime,omitempty"`
	// <ext>core:true</ext> 【抄送人】抄送人 【作用】 用于添加该电子签约文件的抄送人，抄送人将收到文件通知，可查看、下载文件 【传参】 1、参数必传其一（除姓名外），传入多个参数时只按参数中最高优先级查询，优先级为联系方式>成员编号>登录账号。 2、若使用联系方式查询用户，用户不存在时，则使用传入的姓名、联系方式创建用户。
	Transmitters []CbContractTransmitItem `json:"transmitters,omitempty"`
	// 【公共标签】公共标签 【作用】 可传入电子签约文件的标签对文件进行分类、筛选等管理，公共标签仅发起方内部成员可见、可编辑 【传参】 支持传入多个，传参方式为:[\"公共标签1\",\"公共标签2\"]。
	ContractPublicTag []string `json:"contractPublicTag,omitempty"`
	// 【保存草稿时是否允许无签约文件 】保存草稿时是否允许无签约文件 【作用】  当不发起电子签约（即send=false，文件为“草稿”状态时），是否允许暂无签约文件。  【传参】  1、true：创建文件后不发起，即为草稿状态时，允许暂无签约文件。可通过编辑电子签约信息接口<docs>/cross-border/contract/edit</docs>等方式添加签约文件后发起。  2、false：文件为草稿状态时，也必须有签约文件。 3、取值范围：true（允许），false（不允许）；不传值默认为：false（不允许）。
	DraftNoDocument *bool `json:"draftNoDocument,omitempty"`
}
func (obj CrossborderContractCreatebycategoryRequest) GetUrl() string {
    return "/cross-border/contract/createbycategory"
}

func (obj CrossborderContractCreatebycategoryRequest) GetHttpParameter() *http.HttpParameter {
    parameter := http.NewPostHttpParameter()
    jsonBytes, _ := json.Marshal(obj)
    parameter.SetJsonParamer(string(jsonBytes))
    return parameter
}
